perm filename APP1[AIM,DBL]1 blob
sn#124711 filedate 1974-10-17 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .TURN ON "↓_π{"
00900 .TURN ON "⊗" FOR "%"
01000 .PAGE FRAME 53 HIGH 76 WIDE
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY HEADING(⊗3BEINGS⊗*,,⊗4Doug Lenat⊗*)
00100 .EVERY FOOTING(⊗6Fourth Draft .... {DATE},page A1.{IF PAGE = 1 THEN 1 ELSE PAGE},BEING PARTS)
00200 .PORTION APPENDIX
00300 .COUNT PAGE PRINTING 1
00400 .NEXT PAGE
00500 ⊗2APPENDIX 1. ⊗* ⊗3BEING PARTS⊗*
00600
00700 ⊗4IDEN ⊗* How is this BEING referenced in English sentences?
00800 Implemented as productions, whose left sides may make arbitrarily
00900 complex examinations of the world, and whose right sides may order
01000 arbitrarily complex side effects before returning a value.
01100
01200 ⊗4ARGS ⊗* How many? Which are required and which are optional? What
01300 variables must remain local to this BEING? Which global variables
01400 are accessed by some part of this BEING?
01500
01600 ⊗4ARG-CHECK ⊗* Predicates which examine each argument for
01700 suitability. This could include whether defined, whether numerical,
01800 or something more complex (e.g., is it the name of a BEING whose
01900 DATA-STRUCTURE part requires it be initialized to a non-null value?)
02000
02100 ⊗4EVAL-ARGS ⊗* Is the program an NLAMBDA? Is the code it writes
02200 NLAMBDA? If so, which arguments (if any) should be evaluated upon
02300 entry?
02400
02500 ⊗4WHAT ⊗* A brief summary of the global purpose of the BEING. This
02600 is usually a template for an English sentence, more useful for
02700 communication with the user than with other BEINGs. The variables in
02800 this sentence could be instantiated by examining the world, by asking
02900 other BEINGs, by the BEING who called this one, etc.
03000
03100 ⊗4WHY ⊗* A justification for this BEING's existence; why it is
03200 called. The role of the caller to fill in pieces of WHY is much more
03300 important than with the WHAT part.
03400
03500 ⊗4HOW ⊗* A summary of the method(s) used by the BEING to do its
03600 thing. This is a summary of the global strageties this BEING will
03700 try, as contrasted to the more specific parts listed below. Again,
03800 this is more for the user's benefit than for other BEINGs'.
03900
04000 ⊗4EFFECTS ⊗* What will be true after calling this BEING?
04100 Post-conditions. These are broken into main and minor effects, and
04200 weighted as to certainty that they will occur. This part is
04300 implemented as productions: all the EFFECTS parts of all the BEINGS
04400 are merged into a large production system. This is then searched when
04500 some BEING wants something to be true.
04600
04700 ⊗4WHEN ⊗* Factors and weights giving the BEING's temporal immediacy.
04800 This is computed as a sum of weighted factors.
04900 Although PUP6 should probably
05000 compare descriptions of "desire to be in control," rather than just
05100 numbers, this works sufficiently well for the present. Perhaps the
05200 weakness of perceptrons is important only if they are a major part of
05300 the program. In our case, each BEING has a set of triples here, each
05400 of which is a BEING call. They must EVALuate to, respectively, T/NIL,
05500 a weight (to be added in if T), and a sentence justifying this
05600 particular factor.
05700
05800 ⊗4META-CODE ⊗* The "body" of the code, but with uninstantiated
05900 subparts. This may contain goal statements, nondeterministic calls to
06000 other BEINGS, uninstantiated pieces which fill themselves in by
06100 asking other parts of this BEING, its caller, or the user.
06200
06300 ⊗4COMMENTS ⊗* This is a BEING part, and should be distinguished from
06400 the English-like sentences which are scatterred throughout each part
06500 to aide comprehension. This part is simply a list of instructions
06600 for filling in undefined "slots" in other parts. Each member of
06700 COMMENTS is evalled, just prior to attempting the META:CODE part.
06800
06900 ⊗4REQUISITES ⊗* Suppose this BEING ⊗4is⊗* chosen to be in control.
07000 What must be satisfied just before (pre-) the BEING executes?
07100 just after (post-)and during (co-) execution? This is really three
07200 separate BEING parts. The satisfying is ⊗4active⊗*, in that if the
07300 conditions aren't true, other BEINGs will be called to try to make
07400 them true. (If ⊗4passive⊗*, the BEING would simply fail. The
07500 ARG-CHECK part is passive in this sense.)
07600
07700 ⊗4DEMONS ⊗* Which demons should be enabled during the BEING's
07800 execution? They remain active as long as this BEING activation exists
07900 in the control tree.
08000
08100 ⊗4AFFECTS ⊗* Which other BEINGs might be called by this BEING? Why?
08200 That is, which parts of this BEING want what to be done?
08300
08400 ⊗4COMPLEXITY ⊗* A vector describing such features as recursiveness,
08500 transparency to user, etc. Often the CHOOSE-FROM BEING will compare
08600 several BEINGs by a linear function on this vector. The actual
08700 components settled on were: how easy it is to call, its chance of
08800 calling* itself, its chance of succeeding, the effort in trying it,
08900 the efficiency of the code it will generate,
09000 and whether it must be inhibited absolutely at present. All these
09100 range over [0,1].
09200
09300 ⊗4SPECIALIZATIONS ⊗* How to write a more streamlined, special-case
09400 version of this BEING. What decisions must be made, and how do
09500 they simplify the parts of the new BEING?
09600
09700 ⊗4ALTERNATIVES ⊗* If this BEING fails, what are some equivalent
09800 BEINGs?
09900
10000 ⊗4GENERALIZATIONS ⊗* What are some general BEINGs, encompassing
10100 this one?
10200
10300 ⊗4PREDICATE ⊗* How many values does this BEING return? What is the
10400 type of each one (numeric, logical, etc.)? Are there side effects as
10500 well?
10600
10700 ⊗4DATA-STRUC ⊗* If it is one, what must be done to initialize,
10800 access, insert, and delete elements? What is the structure of a
10900 typical element?
11000
11100 ⊗4ENCODABLE ⊗* How to control writing a specialized new BEING: which
11200 other BEING parts must be called, and in what order.
11300
11400 ⊗4INHIBIT-CURRENT-DEMONS ⊗* A lock/unlock mechanism. When handling a
11500 demonic interrupt, we cannot permit the demon to interrupt us again.
11600
11700 ⊗4FORM-CHANGING ⊗* Where can this BEING return control to directly?
11800 Does the entire form of some new BEING's part(s) have to be altered?
11900 If so, how?
12000
12100 Below is listed, for each BEING part, the number of BEINGS in PUP6
12200 which had this part specified for them. Since there were exactly one
12300 hundred BEINGS, these are also percentages. On the average, each
12400 part was used in 29.3% of all BEINGs. This is slightly unfair to PUP6,
12500 since the ⊗4absence⊗* of some BEING parts (e.g., NLAMBDA) conveys a
12600 nontrivial bit of information.
12700
12800 .VERBATIM
12900
13000 54 IDEN
13100 35 IMPLICIT:ARGS
13200 63 EXPLICIT:ARGS
13300 81 EXPLICIT:ARGS:CHECK
13400 4 NLAMBDA
13500 3 NON:EVAL:ARGS
13600 82 WHAT
13700 77 HOW
13800 72 WHY
13900 27 MAIN:EFFECTS
14000 2 MINOR:EFFECTS
14100 19 WHEN
14200 70 META:CODE
14300 16 COMMENTS
14400 6 PRE:REQUISITES
14500 0 CO:REQUISITES
14600 9 POST:REQUISITES
14700 7 DEMONS
14800 14 AFFECTS
14900 92 COMPLEXITY:VECTOR
15000 27 GENERALIZATIONS
15100 40 SPECIALIZATIONS
15200 16 ALTERNATIVES
15300 15 PREDICATE
15400 4 DATA:STRUCTURE
15500 9 ENCODABLE
15600 5 INHIBIT:CURRENT:DEMONS
15700 1 FORM:CHANGING